package com.example.demo_flow

import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.TextView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch

class MainActivity : AppCompatActivity() {
    private lateinit var mainViewModel:MainViewModel
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_main)
        mainViewModel = ViewModelProvider(this).get(MainViewModel::class.java)
        val textView = findViewById<TextView>(R.id.text_view)
        val button = findViewById<Button>(R.id.button)
        button.setOnClickListener {
            //协程作用域收集流数据
            //注意：收集多个流时候，在不同的协程作用域
//            lifecycleScope.launch {
//                launch {//子协程
//                    mainViewModel.time.collect{//收集
//                        textView.text = it.toString()
//                    }
//                }
//                launch{//子协程
//                    mainViewModel.time2.collect{//收集
//                        textView.text = it.toString()
//                    }
//                }
//
//            }
            //背压问题：流速不均匀导致的
            lifecycleScope.launch {
                //只有当页面处于START状态时才执行,官方推荐写法，解决内存泄漏
                repeatOnLifecycle(Lifecycle.State.STARTED){
                    mainViewModel.time.collectLatest{//收集最新的数据，解决背压问题，旧数据丢弃
                        textView.text = it.toString()
                        Log.d("TAG", "onCreate: $it")
                        delay(3000)
                    }
                }

            }

        }
    }
}